package com.feng.d16openclosedprinciple.goodsmell;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * 通知类
 * 好味道的代码
 * 运行方法是在ApplicationContext中进行初始化,并提供一个Alert的实例
 * @author LiYilin on 2020/4/9
 */
@Data
public class Alert {

    private List<AbstractAlertHandler> handlers = new ArrayList<>();

    public void addApiStateInfo(AbstractAlertHandler handler) {
        handlers.add(handler);
    }

    /**
     * 改动如下:
     *  1.入参参数改成类,当想要增加判断条件时就在类中增加字段即可
     *  2.增加handler抽象类(或接口),由其子类(或实现类)实现具体的处理逻辑
     */
    public void check(ApiStatInfo apiStatInfo) {
        for (AbstractAlertHandler handler : handlers) {
            handler.check(apiStatInfo);
        }
    }

}
